package com.tinet.autentia.autentificador.dao;

import java.io.Serializable;
import java.util.List;

/**
 * Interface para definir las firmas de acceso a la bd.
 * 
 * @author Jose Palma.
 * 
 * @param <T>
 *            Clase serializable.
 */
public interface UsuarioDAOInterface<T extends Serializable> {
    /**
     * Agrega el objetoT a la tabla.
     * 
     * @param objetoT
     *            Objeto a ingregar.
     */
    void agregar(T objetoT);

    /**
     * Actualiza el objetoT en la tabla.
     * 
     * @param objetoT
     *            Objeto actualizado
     */
    void actualizar(T objetoT);

    /**
     * Busca un tupla en la tabla.
     * 
     * @param objetoT
     *            Objeto buscado.
     * @return retorna el objeto en caso que exista o null en caso contrario.
     */
    T buscar(T objetoT);

    /**
     * Busca las tuplas existentes en la tabla. Si usa "" o "*" busca todas
     * las tuplas y si ingresa un nombre hace un filtro con el texto
     * ingresado.
     * 
     * @param nombre
     *            Filtro para realizar la busqueda.
     * @return retorna la lista con las tuplas existentes o null si esta
     *         vacia.
     */
    List<T> buscarTodos(String nombre);

    /**
     * Borra el objetoT de la tabla.
     * 
     * @param objetoT
     *            Objeto a eliminar.
     */
    void borrar(T objetoT);

}